ALGOL - ALGOrithmic Language

ALGOL è uno dei vari linguaggi di alto livello, il cui nome deriva dalla combinazione delle prime lettere di ALGOrithmic Language. Questo linguaggio di programmazione fu, in origine, sviluppato a metà degli anni 50 come linguaggio di alto livello disegnato specificatamente per programmare calcoli scientifici, ma divenne, poi, di fatto, il modo per presentare algoritmi negli stampati nei successivi trent' anni. Fu ideato per evitare alcuni dei noti problemi con il FORTRAN ed, eventualmente, per dar inizio ad altri linguaggi di programmazione.
Venne presentato ufficialmente nel 1958 a Zurigo con il nome di IAL, International Algebric Language. Successivamente venne formalizzato in un rapporto intitolato ALGOL 58. La motivazione del cambiamento di nome, nota a posteriori, fu che il primo acronimo era unspeakable and pompous (Perlis, 1981). Da ricordare che in questa occasione la specifica non descriveva come i dati dovevano essere immessi e veniva lasciato alle diverse esecuzioni. Due anni dopo, venne presentata una nuova versione del linguaggio di programmazione: ALGOL 60. In questa versione venne introdotta la struttura a blocchi, ovvero la possibilità di creare blocchi di istruzioni per le variabili e venne espansa l'influenza delle istruzioni di controllo. Inoltre vengono forniti due nuovi metodi per passare parametri a sottoprogrammi. Si aggiunsero, infine, istruzioni di controllo strutturate del tipo if - then – else, il controllo delle iterazioni e il concetto di ricorsività, ovvero la possibilità per una procedura di richiamare sè stessa.
Nel 1968 venne concepito ALGOL 68 come successore di ALGOL 60, progettato con l'obiettivo di uno scope maggiore dell'applicazione, e di una sintassi e una semantica definite più rigorosamente. I contributi dell'ALGOL 68 nel campo dell'informatica furono profondi e vasti, anche se la maggior parte di essi venne riconosciuta e, quindi dichiarata pubblicamente, solo quando era già in disuso. Questa ultima versione di ALGOL venne descritta usando un formalismo a due livelli della grammatica ideata da Adriaan van Wijngaarden.



Storia di Algol

L'ALGOL è stato sviluppato congiuntamente da un comitato di informatici statunitensi ed europei. Esistono tre differenti sintassi: una sintassi di riferimento, una sintassi per la pubblicazione ed una per l'implementazione. Le differenti sintassi permisero di usare differenti parole chiave e convenzioni per i punti decimali (punti o virgole) a seconda della lingua utilizzata.
John Backus sviluppò il metodo di descrizione dei linguaggi di programmazione detto Backus Normal Form (BNF) specificatamente per l'ALGOL 58. È stato rivisto ed ampliato da Peter Naur nella Backus-Naur Form per l'ALGOL 60. Sia Backus che Naur fecero parte del comitato che creò l'ALGOL 60. L'ALGOL 60 ispirò molti dei linguaggi che seguirono.


Charles Anthony Richard Hoare Un aforisma di C. Anthony R. Hoare riguardo ad ALGOL: Qui c'è un linguaggio così avanzato che non è solo un miglioramento rispetto ai predecessori ma anche rispetto ai propri successori. Questa frase, a volte, viene attribuito erroneamente a Edsger Dijkstra, uno dei padri del primo compilatore per ALGOL 60, conosciuto per le sue acute osservazioni sul linguaggio.


Il B5000 della Burroughs Corporation ed i suoi successori erano macchine a stack, progettate per essere programmate mediante varianti estese dell'ALGOL 60, conosciute come Elliot ALGOL; effettivamente il loro sistema operativo chiamato MCP (Master Control Program) era scritto in Elliot ALGOL fin dal 1961. La Unisys Corporation vende tuttora computer che discendono dal B5000, utilizzano l'MCP e supportano vari compilatori di Elliot ALGOL.
ALGOL 60, ufficialmente, non possedeva istruzioni di I/O; le varie implementazioni necessariamente dovettero necessariamente essere create ad-hoc e, di conseguenza, il modo in cui operavano variava da un'implementazione all'altra. Solo il successivo ALGOL 68 offrì, invece, una completa libreria di istruzioni di transput (termine usato da ALGOL 68 per indicare l'Input/Output).
L'ALGOL 60 era dotato di due modalità di passaggio dei parametri: il più comune è detto passaggio per valore, l'altro chiamato passaggio per nome, quest'ultimo modo non è mai stato adottato da nessun altro linguaggio di programmazione successivo. Infatti, il passaggio per nome aveva alcune limitazioni rispetto al passaggio per riferimento, facendone una caratteristica indesiderata nella progettazione del linguaggio. Per esempio, è impossibile con l'ALGOL 60 sviluppare una procedura che scambi i valori di due parametri se i parametri sono passati mediante una variabile intera ed un array indicizzato mediante la stessa variabile intera.
L'ALGOL 68 è stato definito mediante un formalismo chiamato grammatica a due livelli creato da Adriaan van Wijngaarden e dal quale ha preso il nome. Le grammatiche di Van Wijngaarden utilizzano una grammatica senza contesto per generare un insieme infinito di produzioni che permettono di riconoscere un particolare programma in ALGOL 68; sono in grado di esprimere il tipo di richieste che, in molti altri standard di linguaggi di programmazione, vanno sotto il nome di semantica e devono essere espresse in linguaggio naturale non ambiguo per venire, successivamente, implementate nei compilatori come codice "ad hoc" collegato con il parser del linguaggio formale.


Capitolo Precedente | Indice | Capitolo Successivo

Valid XHTML 1.1 Valid CSS!

ALGOL => ALCOHOL => DELIRI!